var total = getId("Total"),//获取注册表单盒子元素id
    userAccount = getId("userAccount"),//获取用户名输入表单id
    userPass = getId("userPass"),//获取用户密码输入表单id
    userPassAgain = getId("userPass_"),//获取用户密码输入表单id
    userName = getId("userName"),//获取用户中文名输入表单id
    handup = getId("handup"),//获取用户提交按钮id
    userInformation = getId("information"),//获取用户提交按钮id
    userEmail = getId("email"),//获取用户邮箱id
    userTelephone = getId("telephone"),//获取用户邮箱id
    tipInformation = total.getElementsByTagName("p"),//获取信息提示文本标签id
    warnColor = "red",//红色
    rightColor = "green",//绿色
    userAccountSign = false,//用户名标志
    userNameSign = false,//用户名标志
    userPassSign = false,//用户密码标志
    userPassSignAgain = false,//用户密码标志
    userInforationSign = false,
    userEmailRegSign = false,
    userTelephoneSign = false,
    userAccountReg = /^\w{6,18}$/,//账户名正则
    userAccountRight = "账户名正确",//提示用户文字
    userAccountNone = "账户名不能为空",//文本，用户名不能为空
    userAccountNoReg = "请输入6-18数字、字母、下划线",
    userPassReg = /^\w{6,18}$/,//用户密码正则
    userPassRight = "用户密码正确",
    userPassNone = "用户密码不能为空",//文本，用户密码不能为空
    userPassNoReg = "请输入6-18数字、字母、下划线",
    // userPassRegAgain = userPass.value,//首次输入密码值
    userPassRightAgain = "密码验证正确",
    userPassNoneAgain = "密码验证不能为空",//文本，用户密码不能为空
    userPassNoRegAgain = "请输入6-18数字、字母、下划线",
    userPassNoAgain = "两次密码不一致",
    userNameReg = /^[\u4e00-\u9fa5]{2,5}$/,
    userNameRight = "姓名正确！",
    userNameNone = "姓名不能为空",//文本，用户名不能为空
    userNameNoReg = "请输入正确姓名",
    userInforationReg = /^\d{17}[0-9X]$/,
    userInforationRight = "身份证正确",
    userInforationNone = "身份证不能为空",//文本，用户名不能为空
    userInforationNoReg = "请输入正确身份证",
    userEmailReg = /^\w+@\w+\.[a-zA-Z_]{2,4}$/,
    userEmailRight = "用户邮箱正确",
    userEmailNone = "邮箱不能为空",//文本，用户名不能为空
    userEmailNoReg = "请输入正确邮箱",
    userTelephoneReg = /^\d{11}$/,
    userTelephoneRight = "用户手机号正确",
    userTelephoneNone = "手机号不能为空",//文本，用户名不能为空
    userTelephoneNoReg = "请输入正确手机号";
// userNameReg = /^\w{6,18}$/,
// userNameRight = "用户密码正确",
// userPassNone = "用户密码不能为空",//文本，用户密码不能为空
// userPassNoReg = "请输入6-18数字、字母、下划线";
//函数名：getId
//功能：获取元素id
//函数入口参数：元素id名字符串
function getId(idName) {
    return typeof (idName) === "string" ? document.getElementById(idName) : idName;//idName;对参数判断，字符串类型返回获取到id,否则返回原参数。
}
// 函数名：addHandle
// 功能：封装通用事件绑定方法
// 入口参数：element绑定事件的dom元素,type事件类型名，handle事件处理函数
function addHandle(element, type, handle) {
    // Chrome浏览器
    if (element.addEventListener) {
        element.addEventListener(type, handle, false);//true,chrome支持捕获事件绑定,false捕获。
        // IE支持dom2级事件绑定
    } else if (element.attachEvent) {
        element.attachEvent('on' + type, handle);//element.attachEvent需要'on' + type
        // IE只支持dom0级事件绑定
    } else {
        element['on' + type] = handle;//type为变量，不是真实事件，不能直接element.type
    }
}
//函数名：validate
//功能：正则验证方法
//函数入口参数：正则表达式，待验证字符串,正确提示信息，错误提示信息。
function validateReg(reg, string) {
    return reg.exec(string);
}
//函数名：showInformation
//功能：给指定标签，设置相应文本信息和颜色
//函数入口参数：指定标签tag组，信息，颜色。
function showInformation(elementTag, information, color) {
    elementTag.innerHTML = information;
    elementTag.style.color = color;
}
//函数名：inputNothing
//功能：判断输标签入是否为空
//函数入口参数：指定标签tag组，信息，颜色。
function inputNothing(element) {
    if (element.value == "") {
        return true;
    }
}
// //函数名：validateUserName
// //功能：验证用户名正确性
// //函数入口参数：用户名输入表单id,绑定事件类型，信息提示文本标签id
// function validateUserName() {
//     // var reg = /^\w{6,18}$/,
//     //     userAccountRight = "用户名正确",
//     //     userAccountNone = "用户名不能为空",//文本，用户名不能为空
//     //     userAccountNoReg = "请输入6-18数字、字母、下划线";
//     //用户名输入表单标签绑定光标移开事件，光标失焦验证用户名正确性。
//     addHandle(userAccount, "blur", function () {
//         // if (userAccount.value == "") {
//         if (inputNothing(userAccount)) {
//             // tipInformation[0].innerHTML=tipUserNameInputTxt;
//             // tipInformation[0].style.color = red;
//             //给信息提示标签设置信息，用户名为空，提示用户输入用户名。
//             showInformation(tipInformation[0], userAccountNone, warnColor);
//         } else {
//             //判断用户名正确性
//             // if (!reg.exec(userAccount.value)) {
//             if (!validateReg(reg, userAccount.value)) {
//                 //给信息提示标签设置信息，用户名不正确，提示用户输入正确用户名。
//                 showInformation(tipInformation[0], userAccountNoReg, warnColor);
//             } else {
//                 //给信息提示标签设置信息，用户名正确，提示用户用户名正确。
//                 showInformation(tipInformation[0], userAccountRight, rightColor);
//                 userNameSign = true;//!设置用户名标志，记录事件是否发生。
//             }
//         }
//     })
// }
// // //函数名：validateUserPassWord
// // //功能：验证用户密码正确性
// // //函数入口参数：用户密码输入表单id,绑定事件类型，信息提示文本标签id
// function validateUserPassWord(userInputElement, tipTag, reg, NoneTip, NoRegTip, rightTip) {
//     var reg = /^\w{6,18}$/,
//         userPassRight = "用户密码正确",
//         userPassNone = "用户密码不能为空",//文本，用户密码不能为空
//         userPassNoReg = "请输入6-18数字、字母、下划线";
//     //用户密码输入表单标签绑定光标移入事件，光标聚焦提示用户输入正确密码。
//     addHandle(userPass, "focus", function () {
//         //给信息提示标签设置信息，提示用户输入正确用户密码。
//         showInformation(tipInformation[1], userPassNoReg, green);

//     })
//     //用户密码输入表单标签绑定光标移开事件，光标失焦验证用户密码正确性。
//     addHandle(userPass, "blur", function () {
//         if (inputNothing(userPass)) {
//             //给信息提示标签设置信息，用户密码为空，提示用户输入用户密码。
//             showInformation(tipInformation[1], userPassNone, red);
//         } else {
//             //判断用户名正确性
//             if (!validateReg(reg, userPass.value)) {
//                 //给信息提示标签设置信息，用户密码不正确，提示用户输入正确用户密码。
//                 showInformation(tipInformation[1], userPassNoReg, red);
//             } else {
//                 //给信息提示标签设置信息，用户密码正确，提示用户用户密码正确。
//                 showInformation(tipInformation[1], userPassRight, green);
//                 userPassSign = true;
//             }
//         }
//     })
// }
//函数名：validateUserPassWord
//功能：验证用户密码正确性
//函数入口参数：用户密码输入表单id,信息提示文本标签tag,正则，空内容提示，不匹配提示，正确内容提示，错误文字颜色，正确文字颜色。
function validateUserPassWord(userInputElement, tipTag, reg, NoneTip, NoRegTip, rightTip, warnColor, rightColor) {//！将重复内容提取，只改一处就搞定函数修改。
    // var reg = /^\w{6,18}$/,
    //     userPassRight = "用户密码正确",
    //     userPassNone = "用户密码不能为空",//文本，用户密码不能为空
    //     userPassNoReg = "请输入6-18数字、字母、下划线";
    //用户密码输入表单标签绑定光标移入事件，光标聚焦提示用户输入正确密码。
    addHandle(userInputElement, "focus", function () {
        //给信息提示标签设置信息，提示用户输入正确用户密码。
        showInformation(tipTag, NoRegTip, rightColor);

    })
    //用户密码输入表单标签绑定光标移开事件，光标失焦验证用户密码正确性。
    addHandle(userInputElement, "blur", function () {
        if (inputNothing(userInputElement)) {
            //给信息提示标签设置信息，用户密码为空，提示用户输入用户密码。
            showInformation(tipTag, NoneTip, warnColor);
        } else {
            //判断用户名正确性
            if (!validateReg(reg, userInputElement.value)) {
                //给信息提示标签设置信息，用户密码不正确，提示用户输入正确用户密码。
                showInformation(tipTag, NoRegTip, warnColor);
            } else {
                //给信息提示标签设置信息，用户密码正确，提示用户用户密码正确。
                showInformation(tipTag, rightTip, rightColor);
                userPassSign = true;
            }
        }
    })
}
//函数名：validatePassWordAgain
//功能：验证用户密码正确性
//函数入口参数：用户密码输入表单id,信息提示文本标签tag,正则，空内容提示，不匹配提示，正确内容提示，错误文字颜色，正确文字颜色。
function validatePassWordAgain(userInputElement, tipTag, reg, NoneTip, NoRegTip, NoAgainTip, rightTip, warnColor, rightColor) {//！将重复内容提取，只改一处就搞定函数修改。
    // var reg = /^\w{6,18}$/,
    //     userPassRight = "用户密码正确",
    //     userPassNone = "用户密码不能为空",//文本，用户密码不能为空
    //     userPassNoReg = "请输入6-18数字、字母、下划线";
    //用户密码输入表单标签绑定光标移入事件，光标聚焦提示用户输入正确密码。
    addHandle(userInputElement, "focus", function () {
        //给信息提示标签设置信息，提示用户输入正确用户密码。
        showInformation(tipTag, NoRegTip, rightColor);

    })
    //用户密码输入表单标签绑定光标移开事件，光标失焦验证用户密码正确性。
    addHandle(userInputElement, "blur", function () {
        if (inputNothing(userInputElement)) {
            //给信息提示标签设置信息，用户密码为空，提示用户输入用户密码。
            showInformation(tipTag, NoneTip, warnColor);
        } else {
            //判断用户名正确性
            if (this.value != userPass.value) {
                //给信息提示标签设置信息，用户密码不正确，提示用户输入正确用户密码。
                showInformation(tipTag, NoAgainTip, warnColor);
                // console.log(userPass.value);
                // console.log(this.value);
            } else {
                //给信息提示标签设置信息，用户密码正确，提示用户用户密码正确。
                showInformation(tipTag, rightTip, rightColor);
                userPassSignAgain = true;
                // console.log(1);
            }
        }
    })
}
//函数名：validateUseInput
//功能：验证用户文本正确性
//函数入口参数：用户文本输入表单id,信息提示文本标签tag,正则，空内容提示，不匹配提示，正确内容提示，错误文字颜色，正确文字颜色。
function validateUseInput(userInputElement, tipTag, reg, NoneTip, NoRegTip, rightTip, warnColor, rightColor, elelmentSign) {//！将重复内容提取，只改一处就搞定函数修改。
    //用户文本输入表单标签绑定光标移入事件，光标聚焦提示用户输入正确文本。
    addHandle(userInputElement, "focus", function () {
        //给信息提示标签设置信息，提示用户输入正确用户文本。
        showInformation(tipTag, NoRegTip, rightColor);
    })
    //用户文本输入表单标签绑定光标移开事件，光标失焦验证用户文本正确性。
    addHandle(userInputElement, "blur", function () {
        if (inputNothing(userInputElement)) {
            //给信息提示标签设置信息，用户文本为空，提示用户输入用户文本。
            showInformation(tipTag, NoneTip, warnColor);
            // return false;
        } else {
            //判断用户名正确性
            if (!validateReg(reg, userInputElement.value)) {
                //给信息提示标签设置信息，用户文本不正确，提示用户输入正确用户文本。
                showInformation(tipTag, NoRegTip, warnColor);
                // return false;
            } else {
                //给信息提示标签设置信息，用户文本正确，提示用户用户文本正确。
                showInformation(tipTag, rightTip, rightColor);
                // return true;
                if (elelmentSign == "userAccountSign") {
                    userAccountSign = true;//账户名标志
                }
                else if (elelmentSign == "userNameSign") {
                    userNameSign = true;//用户名标志
                }
                else if (elelmentSign == "userPassSign") {
                    userPassSign = true;//用户密码标志
                }
                else if (elelmentSign == "userInforationSign") {
                    userInforationSign = true;//用户身份证标志
                }
                else if (elelmentSign == "userEmailRegSign") {
                    userEmailRegSign = true;//用户邮箱标志
                }
                else if (elelmentSign == "userTelephoneSign") {
                    userTelephoneSign = true;//用户手机号标志
                }
            }
        }
    })
}
// validateUserName();
// validateUserPassWord();
// validateUserPassWord(userPass, tipInformation[1], userNameReg, userPassNone, userPassNoReg, userPassRight, warnColor, rightColor);
// //账户名验证
// userAccountSign = validateUseInput(userAccount, tipInformation[0], userAccountReg, userAccountNone, userAccountNoReg, userAccountRight, warnColor, rightColor,"userAccountSign");
// //密码验证！
// userPassSign = validateUseInput(userPass, tipInformation[1], userPassReg, userPassNone, userPassNoReg, userPassRight, warnColor, rightColor);
// //密码再次验证
// userPassSignAgain = validatePassWordAgain(userPassAgain, tipInformation[2], userPass.value, userPassNoneAgain, userPassNoRegAgain, userPassNoAgain, userPassRightAgain, warnColor, rightColor);
// //姓名验证！
// userNameSign = validateUseInput(userName, tipInformation[3], userNameReg, userNameNone, userNameNoReg, userNameRight, warnColor, rightColor);
//账户名验证
validateUseInput(userAccount, tipInformation[0], userAccountReg, userAccountNone, userAccountNoReg, userAccountRight, warnColor, rightColor, "userAccountSign");
//密码验证！
validateUseInput(userPass, tipInformation[1], userPassReg, userPassNone, userPassNoReg, userPassRight, warnColor, rightColor, "userPassSign");
//密码再次验证
validatePassWordAgain(userPassAgain, tipInformation[2], userPass.value, userPassNoneAgain, userPassNoRegAgain, userPassNoAgain, userPassRightAgain, warnColor, rightColor);
//姓名验证！
validateUseInput(userName, tipInformation[3], userNameReg, userNameNone, userNameNoReg, userNameRight, warnColor, rightColor, "userNameSign");
//身份证验证
validateUseInput(userInformation, tipInformation[4], userInforationReg, userInforationNone, userInforationNoReg, userInforationRight, warnColor, rightColor, "userInforationSign");
//用户邮箱验证
validateUseInput(userEmail, tipInformation[5], userEmailReg, userEmailNone, userEmailNoReg, userEmailRight, warnColor, rightColor, "userEmailRegSign");
//用户邮手机号验证
validateUseInput(userTelephone, tipInformation[6], userTelephoneReg, userTelephoneNone, userTelephoneNoReg, userTelephoneRight, warnColor, rightColor, "userTelephoneSign");
// console.log(validateUseInput(userName, tipInformation[3], userNameReg, userNameNone, userNameNoReg, userNameRight, warnColor, rightColor));
// console.log(userPassSign);
addHandle(handup, "click", function () {
    if (userAccountSign == false || userNameSign == false || userPassSign == false || userPassSignAgain == false || userInforationSign == false || userEmailRegSign == false || userTelephoneSign == false) {
        alert("你填写信息有误！");
    } else {
        alert("您已提交信息！");
    }
})
// validateUseInput(userPass, tipInformation[1], userNameReg, userPassNone, userPassNoReg, userPassRight, warnColor, rightColor);
